الاثنين، 9 نوفمبر 2020

مفهوم الخوارزميات في علوم الحاسب

مفهوم الخوارزميات في الحاسوب

إذا أردت للحاسب أن يقوم بأي شيءٍ، فيجب عليك أولًا كتابة برنامج حاسوبي، ولكتابة برنامجٍ حاسوبيٍّ، عليك أن تخبر حاسوبك بدقةٍ وبخطواتٍ مفصلةٍ ماذا تريد منه أن يفعل، ليقوم بعدها الحاسب بتنفيذ هذه الخطوات بحرفيةٍ تامّةٍ، وبالتالي تنفيذ البرنامج، وصولًا إلى تطبيق الهدف المعني.

عندما تطلب من الحاسب أن يفعل شيئًا ما، تستطيع أيضًا أن تختار كيف يفعل هذا الشيء، وهنا يأتي دور الخوارزميات في الحاسوب فهي تعتبر تقنيةً بسيطةً لإنجاز الهدف المعني.


في عالم البرمجة الحاسوبية، هنالك أكثر من طريقةٍ، أي خوارزمية، لإنجاز المهمات والعمليات المطلوبة، وتختلف كل خوارزميةٍ بسلبياتٍ وإيجابياتٍ نظرًا لاختلافها في تنفيذ العمليات.1.

أنواع الخوارزميات

عند النظر إلى الخوارزميات في الحاسوب من منظور اختلاف طرق العمل، سنحصل على هذه الأنواع الرئيسية:

  • خوارزمية الترتيب

الأكثر انتشارًا واستخدامًا، تعتمد كما يوحي اسمها على ترتيب القوائم، ذلك أن عمل الحاسب يقتضي تنظيم وترتيب العديد من القوائم واللوائح من الأوامر البرمجية.

تتشعب هذه الخوارزمية إلى عدة أنواعٍ فرعيةٍ هي الأخرى: الترتيب السريع، وترتيب الدمج، وترتيب الفقاعات وغيره.

  • خوارزمية البحث الشامل

طريقةٌ تعتمد على إلقاء نظرةٍ على الحلول، والإمكانيات المتوفرة، واختيار الأفضل منها.

  • خوارزمية التجزئة والتقسيم “Divide and Conquer”

يعتمد مبدأ هذه الخوارزمية على تجزئة المشاكل الحاسوبية إلى أجزاءَ صغيرةٍ، ثم القيام بحلها.

  • خوارزمية الحل الجشع

طريقةٌ تقوم بحل المشاكل التي تواجهها عبر استخدام أفضل الحلول أو الطرق المتوفرة في الوقت الحالي، مع تجاهلٍ تامٍ للمستقبل، أو الحلول والطرق المستقبلية.

  • خوارزمية برمجة ديناميكية

تعتمد على استخلاص أو الوصول إلى حلٍّ من خلال حلولٍ جانبيةٍ أو صغيرةٍ سابقةٍ، أو دراسة الحلول السابقة واستنتاج حلٍّ جديدٍ منها يناسب الحالة التي أمامها، وتعتبر من أحدث الخوارزميات وأكثرها فعاليةً.2.

أمثلة على الخوارزميات في الحاسوب

كي نفهم طريقة عمل الخوارزميات في الحاسوب لا بد من تبسيط الأمر في مثالٍ هيّنٍ، ولنقل أن لديك صديقًا سيصل إلى مطار مدينتك، وعليه التوجه من المطار إلى منزلك.

من منظور الحاسب، يجب تحديد أكثر من خوارزميةٍ محددةٍ بخطواتٍ واضحةٍ، كي يتم إنجاز هذا الهدف، أو أحيانًا يكون الهدف بسيطًا ويكفي تحديد خوارزميةٍ واحدةٍ لإنجازه، مثل المثال الذي نتحدث فيه عن استقبال صديقٍ من المطار.

مثلًا نضع خوارزمية ركوب التاكسي، ونضع خطوات واضحة ومفصلة لهذه الخوارزمية: أولًا؛ التوجه إلى محطة وقوفٍ للتاكسي، ثم الركوب في التاكسي، فإعطاء سائق التاكسي عنوان المنزل.

أو بإمكاننا استخدام خوارزميةٍ ثانية، مثل الاعتماد على ركوب الحافلة، وأي خوارزميةٍ تتبعها يجب أن ترافقها خطوات مرتبة وواضحة، لأننا كما قلنا، الحاسب يتبع هذه الخطوات بدقةٍ وعنايةٍ.

وكما نرى، فإنّ وجود أنواعٍ مختلفةٍ من الخوارزميات سببه اختلاف طريقة تنفيذ كل واحدٍ منها للهدف المطلوب، فخطوات ركوب التاكسي تختلف عن خطوات ركوب الحافلة، ومثلما هنالك سلبياتٌ وإيجابياتٌ مختلفةٌ عند مقارنة ركوب الحافلة بالتاكسي، فإن الخوارزميات في الحاسوب أيضًا تختلف بكفاءتها وفاعليتها




علاقة الخوارزميات في علوم الحاسب


هل للخوارزميات علاقة بعلوم الحاسب؟


 لا يوجد إنسان على وجه البسيطة يحب التعقيدات – بطبيعة الحال – لذلك دوماً عندما تواجه إحدى التعقيدات أمامك فستتسائل .. هل يجب أن أخوض غمار هذه التعقيدات؟ هل تستحق؟ فإذا كانت الإجابة بنعم و لأقصى درجة فسوف تمضي حياتك كلها بهذه “التعقيدات” لأنك “إقتنعت بضرورتها”، و إلا تجاهلتها أو درت حولها.



لذا عندما نأتي إلى علم الخوارزميات في مدونة علوم، فإننا نعلم تماماً أن الخوارزميات ليست بهذه البساطة – كما أنها ليست صعبة – لكني أعتبرها علم حل التعقيدات. فإذا اردت أن تبدأ بدراسة شئ ما فيجب أن تُقنع نفسك بضرورة دراسته حتى ترتضي أن تبذل جهدك لتتعلمه.
فإذا عدنا إلى عنوان التدوينة، هل للخوارزميات علاقة بعلوم الحاسب؟ سأقول أن للخوارزميات علاقة قوية بالحياة عموماً و أنت شخصياً تقوم بعمليات تحليل للخوارزميات ربما بصورة يومية، بل و تقوم بإنشاء خوارزميات جديدة بعد تحليلها، لا تتعجب من ذلك. سوف نرى ذلك لنصل إلى إجابة العنوان.رمزية للخوارزميات
تتحرك يومياً من منزلك إلى العمل أو إلى السوق، تعلم أن يوم الإثنين سيكون الطريق (أ) مزدحماً و يوم الجمعة سيكون الطريق (أ) بلا إزدحام، فستقرر أن يوم السبت لن تسلك الطريق (أ) حتى تصل إلى هدفك بأسرع وقت، و لكنك ستسلك نفس الطريق يوم الجمعة لأنه يحقق هدفك في الوصول السريع، في الواقع هذا تحليل جيد لخوارزمية الوصول إلى العمل. و على ذلك قس أن كل شئ تملك به الخيارات حتى تصل إلى هدف محدد بإمكانك أن تطبق بعض علوم الخوارزميات.
أذكر تماماً ذلك اليوم الذي تحداني به أحد الأصدقاء في لحظة مرح في إحدى الألعاب على الإنترنت و التي كانت بسيطة جداً، وفقاً لمفهومه تعتمد على الحظ، فهي تعتمد على محاولة إيجاد رقم ضمن أعمدة مرقمة، و إذا فشلت ستُخبرك اللعبة أن الرقم المطلوب أكبر أم أقل من إختيارك – علماً أن الأعمدة مرتبة تصاعدياً – فكان يتعجب من سرعة وصولي إلى الحل !!! فشرحت لهُ أن هذه اللعبة هي الحالة المثالية لتطبيق خوارزمية البحث الثنائي. نعم نعم … حتى في الألعاب 🙂 .
رمزية للخوارزميات
إذن ما هي الخوارزمية : الخوارزمية هي مجموعة من الخطوات المحددة و التي إذا أدخلنا بها معطيات محددة ستقوم بإعطائنا نتائج محددة بناءاً على هذه المعطيات.
هل للخوارزميات علاقة بعلوم الحاسب : هل تحس الآن أن بعض الأفكار تكونت برأسك عن أهمية الخوارزميات بعلوم الحاسب؟ أحب إخبارك أن من أهم أماكن تطبيق علم الخوارزميات هي نظم التشغيل (الويندوز و اللينكس و غيرهما) و المعالجات، كما يتم تطبيق الخوارزميات أيضاً بذواكر الوصول العشوائي ( RAM). فكر قليلا و ستعلم أن كل هذه الكائنات تحتاج أن تختار أفضل طريقة حتى تنفذ أمراً ما.


هل تعلم أنك عندما تستخدم محرك البحث قووقل، تكتب ما تريد و تضغط على بحث تقوم بتنفيذ خورازمية أو خوارزميات بحث تبحث لك عن ما تريد خلال أجزاء من الثانية؟؟ نعم إنّهُ علم الخوارزميات.
هل سمعت أحد الموظفين يتذمر من بطئ نظام ما عند إجراء عملية البحث؟ غالباً ما تحل المشكلة بتحليل خوارزمية البحث، و هكذا نرى أنه كلما كان حجم البيانات أكبر و كلما كان التطبيق أو البرنامج أكبر و زاد عدد المستخدمين، كانت حوجتك إلى علم الخوارزميات أشد.
فإذا كنت تسعى إلى الفوز بالمسابقات البرمجية أو تسعى إلى إصدار برنامج مميز يؤدي مهامة بفعالية فإننا في مدونة علوم نؤكد لك أن علم الخوارزميات سيكون عوناً كبيراً لك في طريق النجاح.

نبذة عن المدونة






هذه المدونه سوف تتكلم عن

( الخوارزميات في علوم الحاسب )

قام بعمل المدونة :

محمود طارق محمدخير حسين

شعبه : 101

بإشراف معلم مادة الحاسب بثانوية قريش : أ.زياد الجهني


الجمعة، 6 نوفمبر 2020

كيفية كتابة الخوارزميات

 

كيفية كتابة الخوارزميات

ما هي طرق / خطوات كتابة الخوارزمية؟

يتم حل أي مشكلة (تصميم الخوارزمية) في أربع خطوات رئيسية، ولكي تتمكن من فهم كل خطوة جيدا سوف أطرح مشكلة برمجية بسيطة ونقوم بحل المشكلة من خلال تطبيق خطوات كتابة الخوارزمية


إكتب خوارزمية للحصول على المتوسط الحسابي لرقمين وقم بطباعة النتيجة

1. تعريف المشكلة - Problem Definition

يعتبر تعريف أو تحديد المشكلة هو أولى خطوات الحل للمشكلة، حيث يتم تحديد المدخلات والمخرجات بكل دقة ووضوح على شكل متغيرات - Variables، فيتوجب عليك كمبرمج أن تقوم بتحديد المفاهيم الخاصة بالمشكلة على هيئة متغيرات ذات إسم محدد ونوع بيانات محدد، حيث يتم الإشارة إلى هذه البيانات في الخوارزمية من خلال الإسم، ونوع البيانات يحدد العمليات التي يمكن إجراؤها على البيانات، يوجد العديد من أنواع البيانات ولكن يمكنك أن تصنف البيانات في نوعين رئيسيين وهم البيانات الرقمية والبيانات النصية.


في هذه الخطوة عادة ما يتم إنشاء جدول بالبيانات - Data Table، بحيث يحتوي هذا الجدول على تصنيفين رئيسيين وهم متغيرات المدخلات - Input Variables، متغيرات النتيجة - Output Variables.


وبتطبيق هذه الخطوة على المثال، نحصل على جدول البيانات التالي


المدخلات


X الرقم الأول


Y الرقم الثاني


المخرجات


average المتوسط الحسابي للرقمين


2. تصميم / كتابة الخوارزمية - Writing an Algorithm

في هذه الخطوة يجب على المبرمج التفكير في طريقة حل المشكلة، ثم تقسيم هذه الطريقة على مجموعة خطوات، بحيث تقوم كل خطوة بإجراء عملية واحدة فقط، ويجب الأخذ في الإعتبار ترتيب هذه الخطوات، لأن الكمبيوتر يقوم بتنفيذ هذه الخطوات واحدة تلو الأخرى بالترتيب الذي يقوم به المبرمج، ويجوز للمبرمج أن يقوم بتعريف متغيرات جديدة لتساعده في حل المشكلة، وفي هذه الحالة تسمى هذه المتغيرات بـ متغيرات البرنامج - Program Variables، وهذه المتغيرات لاتعد من المدخلات ولا من المخرجات.


وقبل أن نبدأ في كتابة الخوارزمية يجب أن تعلم أن هناك طريقتين لكتابة الخوارزمية، وهم كالتالي


الطريقة الكتابية - شبيهة الكود - Pseudo Code

وفي هذه الطريقة يقوم المبرمج بكتابة خطوات حل المشكلة (الخوارزمية) في تسلسل مرقم أو غير مرقم، وتكتب كل خطوة في سطر مستقل، ويستخدم المبرمج اللغة التي يتحدث بها سواء كانت العربية أو الإنجليزية لكتابة تسلسل الخطوات، ومن أهم مميزات هذه الطريقة هي المرونة، حيث يمكن للمبرمج كتابة أفكارة على شكل خطوات باللغة الأساسية التي يستخدمها في حياته اليومية، وعادة الخوارزميات المكتوبة جيدا بهذه الطريقة يسهل تحويلها إلى أكواد أو أوامر للكمبيوتر، والعيب الرئيسي في هذه الطريقة أنه مع كبر حجم الخوارزمية يصبح من الصعب تتبع خطواتها ومراجعتها، وأيضا من عيوب هذه الطريقة أنها لا تمكن المبرمجين الذين يتحدثون بلغة مختلفة عن التي كتبت بها الخوارزمية من فهمها. وبتطبيق هذه الطريقة على المثال نحصل على الخوارزمية التالية


Start


Read: X, Y


sum = X + Y


average = sum / 2


Write: average


End


إبدأ


إقرأ المدخلات: X, Y


sum = X + Y


average = sum / 2


إطبع المتغير: average


النهاية


المخطط الإنسيابي - خريطة التدفق - Program Flowchart

وفي هذه الطريقة أيضا يقوم المبرمج بكتابة خطوات حل الخوارزمية ولكن بإستخدام مجموعة من الأشكال الهندسية الأساسية بحيث كل شكل يمثل خطوة من خطوات حل المشكلة، ويوجد معيار سائد ومتبع لإستخدام هذه الأشكال.



 

من مميزات إستخدام هذه الطريقة أنها مباشرة وبسيطة ويسهل فيها تتبع خطوات الخوارزمية، وأيضا يمكن فهم الخوارزمية المكتوبة بهذه الطريقة من أي مبرمج أي كانت اللغة التي يتحدث بها، ومن أهم عيوب هذه الطريقة أنه يصعب تحويلها إلى أكواد إذا كنت تستخدم لغات برمجة مثل الـ C، ويصعب كتابة الخوارزميات المعقدة بهذه الطريقة.


وقد خصصت مقال منفصل لـ شرح خرائط التدفق / المخطط الإنسيابي وشرح أهم الأشكال المستخدمة في تمثيل خطوات حل المشكلة وإستخدامات كل شكل في خريطة التدفق.


المخطط الإنسيابي - خريطة التدفق - flowchart - لـ خوارزمية المتوسط الحسابي لرقمين

3. تتبع / مراجعة الخوارزمية - Tracing the Algorithm

في هذه الخطوة نقوم بإختبار الخوارزمية التي قمنا بكتابتها، وذلك من خلال إدخال بيانات معروفة النتيجة مسبقا، خطوة بخطوة لقياس مدى صحة وكفاءة الخوارزمية، وبتطبيق ذلك على المثال سوف نستخدم الرقمين 7 و 3 حيث معروف أن المتوسط الحسابي الخاص بهم هو الرقم 5، ويتم ذلك على خطوات منفصلة كالتالي


إدخال البيانات بحيث يصبح المتغير X يساوي الرقم 7، والمتغير Y يساوي الرقم 3

حساب حاصل جمع الرقمين X و Y وتخزين نتيجة الجمع في المتغير sum، لتصبح قيمته تساوي الرقم 10

حساب قيمة المتوسط الحسابي وذلك بقسمة قيمة المتغير sum على العدد 2 وهو مجموع البيانات التي تم إدخالها، ثم تخزين النتيجة في المتغير average، والتي سوف تصبح 5 وهو حاصل قسمة الرقم 10 على الرقم 2

طباعة قيمة المتغير average

إنهاء البرنامج

عند قراءة الخطوات السابقة قد تشعر ببعض الملل وذلك لأنك كإنسان بمجرد أن يطلب منك حساب المتوسط الحسابي للرقمين 7 و 3 قد تجيب مباشرة بأن النتيجة هي 5، ولكن كما أخبرتك عن القاعدة الأساسية لتعلم الخوارزميات، فكر مثل الكمبيوتر، الكمبيوتر يجب إعطاؤه التعليمات واحدة تلو الأخرى بالترتيب وبالتفصيل حتى يتمكن من حساب أو حل أو تطبيق أي خوارزمية، وذلك هو الهدف الأساسي من تعلم الخوارزميات للبرمجة.

 

4. تحويل الخوارزمية إلى برنامج للحاسوب - Writing Code

وهنا يجب عليك أن تتعلم أولا أي لغة برمجية لكي تتمكن من تحويل الخوارزمية التي قمت بتصميمها إلى برنامج، وفي هذه الخطوة سوف نستخدم لغة البرمجة جافا سكريبت مع لغة الترميز HTML لكي نتمكن من تطبيق المثال


HTML, JavaScript


<!DOCTYPE html>

<html>

<head>

  <meta charset="utf-8" />

  <title>Algorithms</title>

</head>

<body>

  <script type="text/javascript">

    // Read the Value of X

    var X = prompt("The value of X ?", 0);

    // Read the Value of Y

    var Y = prompt("The value of Y ?", 0);

    // Convert X and Y to Numeric Data Type,

    // and Calculate the sum of X and Y

    var sum = +X + +Y;

    // Calculate the Average of X and Y

    var average = sum / 2;

    // Print the Value of Average to the User

    alert("The average of X:" + X + " and Y:" + Y + " is " + average);

  </script>

</body>

</html>

ولكي تفهم اكثر 

    شاهد الفيديو👇 


 


مقالات

أخبار